package com.egreen.common.serviceapi.system;

import com.egreen.common.pojo.DTO.system.*;
import com.egreen.common.pojo.VO.system.GetUserFeedbackVO;
import com.egreen.common.pojo.VO.system.GetSystemAnnouncementVO;
import com.egreen.common.pojo.VO.system.GetSystemInformationVO;
import com.egreen.common.pojo.entity.system.Commodity;
import com.egreen.common.pojo.VO.system.CommodityExchangeRecordVO;


import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author cloudJiang
 * @since 2022-07-16
 */
public interface ISystemAPI {

    /**
     * 兑换记录的查找
     *
     * @return
     */
    List<CommodityExchangeRecordVO> selectExchangeRecords(int state);


    /**
     * 系统公告查看
     *
     * @return
     */
    public List<GetSystemAnnouncementVO> getAllSystemAnnouncement();

    /**
     * 添加系统公告
     */
    public void addSystemAnnouncement(SystemAnnouncementDTO systemAnnouncementDTO);

    /**
     * 删除系统公告
     */
    public void deleteSystemAnnouncement(int id);

    /**
     * 用户查看自己的系统信息
     *
     * @return
     */
    public List<GetSystemInformationVO> getSystemInformation(int userId);

    /**
     * 添加系统信息
     */
    public void addSystemInformation(SystemInformationDTO systemInformationDTO);

    /**
     * 删除系统信息
     */
    public void deleteSystemInformation(int id);

    /**
     * 根据商品ID查询商品所需积分
     *
     * @param commodityId
     */
    Commodity selectCommodity(Integer commodityId);

    /**
     * 增加兑换商品
     * @param addCommodityDTO
     */
    void addMerchandise(AddCommodityDTO addCommodityDTO);

    /**
     * 兑换商品的删除
     * @param id
     */
    void deletemerchaindise(int id);

    /**
     * 减少兑换商品库存
     *
     * @param reduceStockDTO
     */
    void reduceStock(ReduceStockDTO reduceStockDTO);

    /**
     * 更改库存商品价格
     *
     * @param changePriceDTO
     */
    void changePrice(ChangePriceDTO changePriceDTO);

    /**
     * 系统公告查询
     *
     * @return
     */
    public List<GetSystemAnnouncementVO> getSystemAnnouncement(String title);

    /**
     * 添加系统公告
     */
    public void addSystemAnnouncement(AddSystemAnnouncementDTO systemAnnouncementDTO);

    /**
     * 系统消息查询
     *
     * @return
     */
    public List<GetSystemInformationVO> getSystemInformation(String title);

    /**
     * 反馈消息查询
     *
     * @return
     */
    public List<GetUserFeedbackVO> getUserFeedback(String title);

    /**
     * 更新物流信息
     *
     * @param logisticsInformationDTO
     */
    void updateLogistics(LogisticsInformationDTO logisticsInformationDTO);

    /**
     * 添加物流信息
     */
    void addCommodityExchangeRecord(AddCommodityExchangeRecordDTO addCommodityExchangeRecordDTO);


    List<Commodity> queryProjectByRange(ProductPriceRangeDTO productPriceRangeDTO);
}
